package ucla.axelia.reportes;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import ucla.axelia.controlador.interfaces.IServicioAdministracionReporteVoluntariosAsignadosActividadPlanificada;
import ucla.axelia.modelo.data.ActividadPlanificada;

import nextapp.echo2.app.Column;
import nextapp.echo2.app.Extent;

import com.obelisco.exception.ObeliscoException;
import com.obelisco.vista.componentes.Catalogo;
import com.obelisco.vista.componentes.ContenedorReporte;
import com.obelisco.vista.componentes.TextFieldCatalogo;
import com.obelisco.vista.componentes.TextFieldCatalogoListener;
import com.obelisco.vista.controles.BindingTextArea;
import com.obelisco.vista.controles.BindingTextField;
import com.obelisco.vista.controles.Grid;
import com.obelisco.vista.controles.Label;

public class ContenedorReporteVoluntariosAsignadosActividadPlanificada extends ContenedorReporte {

	private IServicioAdministracionReporteVoluntariosAsignadosActividadPlanificada servicioAdministracionReporteVoluntariosAsignadosActividadPlanificada;
	
	private Catalogo catActividadPlanificada;
	private ActividadPlanificada actividadPlanificada;
	private TextFieldCatalogo txtCatActividadPlanificada;
	private BindingTextField txtNombreActividad;
	private BindingTextField txtTipoActividad;
	private BindingTextField txtPrograma;
	private BindingTextArea txtDescripcion;
	
	private TextFieldCatalogoListener txtCatActividadPlanificadaListener = new TextFieldCatalogoListener() {
		
		public void onSeleccionar(Object objecto) {
			setActividadPlanificada((ActividadPlanificada)objecto);
			txtCatActividadPlanificada.setText(String.valueOf(actividadPlanificada.getIdActividadPlanificada()));
			txtNombreActividad.setText(actividadPlanificada.getActividad().getNombreActividad());
			txtTipoActividad.setText(actividadPlanificada.getActividad().getTipoActividad().getNombreTipoActividad());
			txtPrograma.setText(actividadPlanificada.getActividad().getPrograma().getNombrePrograma());
			txtDescripcion.setText(actividadPlanificada.getDescripcionActividadPlanificada());
		}	
		
	};
	
	private void initComponents(){
		this.removeAll();
		this.setEnabled(true);
		Grid grid = new Grid();
		grid.setStyleName("Obelisco.GridPaneDialogo");
		grid.setSize(2); //Numero de columnas de la tabla
		grid.setColumnWidth(0, new Extent(150, Extent.PX)); //PX denota pixeles
		Label lblActividad = new Label ("Actividad");
		txtCatActividadPlanificada = new TextFieldCatalogo(80);
		txtCatActividadPlanificada.setCatalogo(catActividadPlanificada);
		txtCatActividadPlanificada.addCatalogoListener(this.txtCatActividadPlanificadaListener);
		grid.add(lblActividad);
		grid.add(txtCatActividadPlanificada);
		grid.add(new Label ("Programa"));
		txtPrograma = new BindingTextField(200);
		grid.add(txtPrograma);
		txtPrograma.setEnabled(false);
		grid.add(new Label ("Tipo de Actividad"));
		txtTipoActividad  = new BindingTextField(200);
		grid.add(txtTipoActividad);
		txtTipoActividad.setEnabled(false);
		grid.add(new Label ("Nombre"));
		txtNombreActividad  = new BindingTextField(200);
		grid.add(txtNombreActividad);
		txtNombreActividad.setEnabled(false);
		grid.add(new Label ("Descripcion"));
		txtDescripcion  = new BindingTextArea(200, 50);
		grid.add(txtDescripcion);
		txtDescripcion.setEnabled(false);
		Column columna = new Column(); // se crea la columna
		columna.add(grid); // se le agrega el grid
		this.add(columna);

	}
	
	@Override
	public Map extraerParametros() {
		Map<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("idActividadPlanificada", actividadPlanificada.getIdActividadPlanificada());
		parametros.put("nombreActividad", actividadPlanificada.getActividad().getNombreActividad());
		parametros.put("descripcionActividadPlanificada", actividadPlanificada.getDescripcionActividadPlanificada());
		parametros.put("cantidadHorasActividadPlanificada", actividadPlanificada.getCantidadHorasActividadPlanificada());
		parametros.put("nombrePrograma", actividadPlanificada.getActividad().getPrograma().getNombrePrograma());
		parametros.put("nombreTipoActividad", actividadPlanificada.getActividad().getTipoActividad().getNombreTipoActividad());
		parametros.put("fechaInicioActividadPlanificada", actividadPlanificada.getFechaInicioActividadPlanificada());
		parametros.put("fechaFinActividadPlanificada", actividadPlanificada.getFechaFinActividadPlanificada());
		return parametros;
	}

	@Override
	public void inicializar() {
		initComponents();
	}

	@Override
	public List realizarBusqueda() {
		return null;
	}

	public Catalogo getCatActividadPlanificada() {
		return catActividadPlanificada;
	}

	public void setCatActividadPlanificada(Catalogo catActividadPlanificada) {
		this.catActividadPlanificada = catActividadPlanificada;
	}

	@Override
	public List obtenerLista() {
		return servicioAdministracionReporteVoluntariosAsignadosActividadPlanificada.buscarVoluntariosAsignados(actividadPlanificada);
	}

	@Override
	public boolean onValidarDatos() {
		if (actividadPlanificada == null)
			throw new ObeliscoException("DEBE SELECCIONAR UNA ACTIVIDAD PLANIFICADA");
		return true;
	}

	@Override
	public String rutaArchivoReporte() {
		return null;
	}

	public ActividadPlanificada getActividadPlanificada() {
		return actividadPlanificada;
	}

	public void setActividadPlanificada(ActividadPlanificada actividadPlanificada) {
		this.actividadPlanificada = actividadPlanificada;
	}

	public IServicioAdministracionReporteVoluntariosAsignadosActividadPlanificada getServicioAdministracionReporteVoluntariosAsignadosActividadPlanificada() {
		return servicioAdministracionReporteVoluntariosAsignadosActividadPlanificada;
	}

	public void setServicioAdministracionReporteVoluntariosAsignadosActividadPlanificada(
			IServicioAdministracionReporteVoluntariosAsignadosActividadPlanificada servicioAdministracionReporteVoluntariosAsignadosActividadPlanificada) {
		this.servicioAdministracionReporteVoluntariosAsignadosActividadPlanificada = servicioAdministracionReporteVoluntariosAsignadosActividadPlanificada;
	}

}